package tp6;

import java.util.Collection;
import java.util.List;
import java.util.Set;

public interface Multimap<K, V> {
	 /**
	    * Agrega un par clave/valor a la tabla. 
	    */
	   public void put(K key, V value);
	   /**
	    * Obtiene el valor asociado a una clave. Si no existe la clave retorna null.
	    */
	   public List<V> get(K key);
	  
	   public V getFirst(K key);
	   
	   /**
	    * Elimina un par clave/valor de la tabla. Si la clave no existe no hace nada.
	    */
	   public void remove(K key);
	   
	   public void remove(K key,V value);
	   /**
	    * Retorna todas las claves insertadas en la tabla.
	    */
	   public Set<K> keySet();
	   /**
	    * Retorna todos los valores insertados en la tabla.
	    */
	   public Collection<V> values();
	   /**
	    * Obtiene la cantidad de pares clave/valor insertados en la tabla.
	    */
	   public int size();
}
